package jp.ac.aiit.yc.softarch.hbcp.service.common;

import java.util.ArrayList;
import java.util.List;
import jp.ac.aiit.yc.softarch.hbcp.model.common.User;

public class UserManagementService {
	protected static List<User> users = new ArrayList<User>();
	protected static List<User> adminUsers = new ArrayList<User>();
	static {
		System.out.println("initializing UserManagemrntService");
		adminUsers.add(new User("admin", "admin"));
		try{
			users = DataAccessObject.readUsers();
		}catch(Exception e){
			System.out.println(e);
		}
	}




	public List<User> getUsers() {//登録されているユーザーを返すメソッド
		System.out.println("doing UserManagemrntService.getUsers() : " + CalendarUtil.nowDate());
		return users;
	}

	public boolean regist(User user)throws Exception{//新規ユーザ登録を行うメソッド
		System.out.println("doing UserManagemrntService.regist() : " + CalendarUtil.nowDate());
		System.out.println("user.name=" + user.name);
		System.out.println("user.password=" + user.password);
		 for (User x: users) {
			   if(x.name.equals(user.name) ){//すでに同じユーザー名が登録されていないかチェックするループ
				   System.out.println(user.name + " is already registed");
				   return false;
			   }
		 	}
		users.add(user);//サーバー側リストへのユーザーの登録
		DataAccessObject.insertUser(user);//DBへのユーザー登録
		System.out.println(user.name + " has registed");
		return true;
	}

	public boolean delUser(User user)throws Exception{//既存ユーザの削除を行うメソッド
		System.out.println("doing UserManagemrntService.delUser() : " + CalendarUtil.nowDate());
		System.out.println("user.name=" + user.name);
		System.out.println("user.password=" + user.password);
		 for (User x: users) {//削除対象のユーザーを探すループ
			   if(x.name.equals(user.name) ){
				   users.remove(x);//サーバーからユーザー情報を削除する
				   DataAccessObject.deleteUser(user);//DBからユーザー情報を削除する
				   System.out.println(user.name + " has deleted");
				   return true;
			   }
		 	}
		 System.out.println(user.name + " is not found");
		 return false;
	}

	public boolean updateUser(User user)throws Exception{//既存ユーザの登録情報変更を行うメソッド
		System.out.println("doing UserManagemrntService.updateUser() : " + CalendarUtil.nowDate());
		System.out.println("user.name=" + user.name);
		System.out.println("user.password=" + user.password);
			for (int i = 0;i < users.size();i++) {//変更対象のユーザーを探すループ
				if (users.get(i).name.equals(user.name)) {//同じ名前のユーザーが見つかったら
					System.out.println(user.name + " has updated");
					users.set(i, user);//サーバーのユーザー情報を更新する
					DataAccessObject.updateUser(user);//DBのユーザー情報を更新する
					return true;
				}
			}
		 System.out.println(user.name + " is not found");
		 return false;
	}

}
